home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GNUGEM27 / VDIFSM.C < prev    next >
C/C++ Source or Header  |  1993-03-24  |  18KB  |  650 lines

  1. /*
  2.  * FSM/SpeedoGDOS  gdos bindings
  3.  * this file has some relationship to a file supplied by Atari
  4.  * but it changed quite a bit (among other things it appears to work).
  5.  * v_shtext survived verbatim from the original.
  6.  *
  7.  * ++jrb add more speedoGDOS stuff. now it looks nothing like the one
  8.  *         from atari. i guess this file should now be called vdispeedo or
  9.  *         something like that. btw: atari claims that the api did'nt change
  10.  *         yeah right!
  11.  */
  12.  
  13. #include "common.h"
  14. #ifndef _COMPILER_H
  15. # include <compiler.h>
  16. #endif
  17. #include <types.h>
  18.  
  19. #ifdef __DEF_ALL__
  20.  
  21. #define L_vqt_fext
  22. #define L_v_ftext
  23. #define L_v_fteof
  24. #define L_v_getout
  25. #define L_vst_scra
  26. #define L_vst_erro
  27. #define L_v_shtext
  28. #define L_vst_arbp
  29. #define L_vst_ar32
  30. #define L_vqt_adva
  31. #define L_vqt_ad32
  32. #define L_vqt_devi
  33. #define L_v_saveca
  34. #define L_v_loadca
  35. #define L_v_flushc
  36. #define L_vst_sets
  37. #define L_vst_se32
  38. #define L_vst_skew
  39. #define L_vqt_get_
  40. #define L_vqt_cach
  41. #define L_vst_char
  42. #define L_vst_kern
  43. #define L_vqt_fnt
  44. #define L_vqt_trac
  45. #define L_vqt_pair
  46. #define L_v_getbit
  47.  
  48. #endif /* __DEF_ALL__ */
  49.  
  50. #ifdef L_vqt_fext
  51.  
  52. /* Inquire Outline Font Text Extent. This function works exactly like
  53.  * vqt_extent(), but the rectangle returned will account for the remainder
  54.  * values of vqt_advance() and kerning.
  55.  */
  56. void vqt_f_extent(int handle, const char *str, int extent[8])
  57. {
  58.     unsigned char ch;
  59.     short *ptr;
  60.     int   *ept, *end;
  61.  
  62.     ptr = _intin;
  63.     while ( ch = *str++)
  64.     *ptr++ = ch;
  65.     *ptr = 0;
  66.     __vdi__(VDI_CONTRL_ENCODE(240, 0, (int)(ptr - _intin), 0), handle);
  67.  
  68.     ptr = _ptsout;
  69.     ept = extent;
  70.     end = ept + 8;
  71.     do {
  72.     *ept++ = *ptr++;
  73.     } while (ept < end);
  74. }
  75.  
  76. #endif /* L_vqt_fext */
  77.  
  78.  
  79. #ifdef L_v_ftext
  80.  
  81. /* Outline Font Text. This function works exactly like v_gtext(), but the text
  82.  * returned will account for the remainder values of vqt_advance().  In other
  83.  * words, the text spacing will be more accurate. In addition, for applications
  84.  * that want more control over character placement, v_ftext() will take a
  85.  * custom set of offset vectors, one for each character in the string
  86.  * (including the last one for underlining calculations).  Each vector must
  87.  * consist of a pair of 16-bit values that will be used in place of a
  88.  * character's advance vector when outputting text.  A second binding follows
  89.  * the original.
  90.  */
  91. void
  92. v_ftext(int handle, int x, int y, const char *str)
  93. {
  94.     unsigned char    ch;
  95.     short *ptr = _intin;
  96.  
  97.     _ptsin[0] = x;
  98.     _ptsin[1] = y;
  99.     while ( ch    = (unsigned const char) *str++)
  100.     *ptr++ = ch;
  101.     *ptr = 0;
  102.  
  103.     __vdi__(VDI_CONTRL_ENCODE(241, 1, (int)(ptr - _intin), 0), handle);
  104. }
  105.  
  106. #endif /* L_v_ftext */
  107.  
  108. #ifdef L_v_fteof
  109. void v_ftext_offset(int handle, int x, int y, const char *str, int *offset)
  110. {
  111.     unsigned char    ch;
  112.     short *ptr = _intin;
  113.     int n = 0;
  114.  
  115.     _ptsin[0] = x;
  116.     _ptsin[1] = y;
  117.     while ( ch    = (unsigned const char) *str++)
  118.     {
  119.     *ptr++ = ch;
  120.         n++;
  121.     }
  122.     *ptr = 0;
  123.  
  124.     ptr = &_ptsin[2];
  125.     for(n *= 2; n > 0; n--)
  126.     {
  127.         *ptr++ = *offset++;
  128.     }
  129.  
  130.     __vdi__(VDI_CONTRL_ENCODE(241, 1, (int)(ptr - _intin), 0), handle);
  131. }
  132. #endif /* L_v_fteof */
  133.  
  134. #ifdef    L_v_killou
  135.  
  136. #error v_killoutline(int handle, void *component) doesnt exist any more
  137.  
  138. #endif /* L_v_killou */
  139.  
  140.  
  141. #ifdef L_v_getout
  142.  
  143. /* Generate an outline for character ch, and return the bezier representation
  144.  * in the buffer provided.
  145.  */
  146. void v_getoutline(int handle, int ch, int *xyarray, char *bezarray,
  147.                   int maxverts, int *numverts)
  148. {
  149.     int **addr;
  150.  
  151.     _intin[0] = ch;
  152.     _intin[1] = maxverts;
  153.     addr = (int **)(&_intin[2]);
  154.     *addr++ = xyarray;
  155.     *addr = (int *)bezarray;
  156.     __vdi__(VDI_CONTRL_ENCODE(243, 0, 6, 0), handle);
  157.     *numverts = _intout[0];
  158. }
  159.  
  160. #endif /* L_v_getout */
  161.  
  162.  
  163. #ifdef L_vst_scra
  164.  
  165. /* Set scratch buffer allocation mode.
  166.  * This buffes is used when creating special effects on fonts.
  167.  * mode=0: (default) account for FSM fonts when allocating scratch buffers
  168.  * mode=1: account only for BM fonts;  no special effects for outlines
  169.  * mode=2: allocate no scratch buffer; no special effects at all
  170.  */
  171. void vst_scratch(int handle, int mode)
  172. {
  173.     _intin[0] = mode;
  174.     __vdi__(VDI_CONTRL_ENCODE(244, 0, 1, 0), handle);
  175. }
  176.  
  177. #endif /* L_vst_scra */
  178.  
  179.  
  180. #ifdef L_vst_erro
  181.  
  182. /* Set FSM error mode.
  183.  * mode=1: (default) errors go to screen.
  184.  * mode=0: errors reported in error variable `errorvar'.
  185.  */
  186. void vst_error(int handle, int mode, int *errorvar)
  187. {
  188.     short errv;
  189.  
  190.     _intin[0] = mode;
  191.     *(short **)&_intin[1] = &errv;
  192.     __vdi__(VDI_CONTRL_ENCODE(245, 0, 3, 0), handle);
  193.     *errorvar = errv;
  194. }
  195.  
  196. #endif /* L_vst_erro */
  197.  
  198.  
  199. #ifdef L_v_shtext
  200.  
  201. /* v_gtext with shadow.
  202.  * Text color should be set to `color' before calling.
  203.  * This is not technically an FSM binding,
  204.  * but this module is a convenient place for it.
  205.  */
  206. void v_shtext( int wsid,
  207.       int x,
  208.       int y,
  209.       const char * text,
  210.       int color,
  211.       int xshadow,
  212.       int yshadow )
  213. {
  214.     __EXTERN void v_ftext __PROTO((int, int, int, const char *));
  215.     __EXTERN int vst_color __PROTO((int, int));
  216.  
  217.     if( xshadow || yshadow )
  218.     {
  219.     v_ftext( wsid, x+xshadow*2, y+yshadow*2, text );
  220.     (void) vst_color( wsid, 0 );
  221.     v_ftext( wsid, x+xshadow, y+yshadow, text );
  222.     (void) vst_color( wsid, color );
  223.     }
  224.     v_ftext( wsid, x, y, text );
  225. }
  226. #endif /* L_v_shtext */
  227.  
  228.  
  229. #ifdef L_vst_arbp
  230.  
  231. /* Set character cell height to arbitrary value.
  232.  * Height is given in printer points (more or less) and it does not
  233.  * have to be listed in extend.sys.
  234.  * Only for FSM outline fonts.
  235.  */
  236. int vst_arbpt( int handle,
  237.        int point,
  238.        int *wchar,
  239.        int *hchar,
  240.        int *wcell,
  241.        int *hcell )
  242. {
  243.     short    *outp = &_ptsout[0];
  244.  
  245.     _intin[0] = point;
  246.     __vdi__(VDI_CONTRL_ENCODE(246, 0, 1, 0), handle);
  247.     *wchar = *outp++;
  248.     *hchar = *outp++;
  249.     *wcell = *outp++;
  250.     *hcell = *outp;
  251.  
  252.     return _intout[0];
  253. }
  254. #endif /* L_vst_arbp */
  255.  
  256. #ifdef L_vst_ar32
  257.  
  258. /* fix32 version */
  259. long vst_arbpt32( int handle,
  260.        long point,
  261.        int *wchar,
  262.        int *hchar,
  263.        int *wcell,
  264.        int *hcell )
  265. {
  266.     short    *outp = &_ptsout[0];
  267.  
  268.     *((long *)(&_intin[0])) = point;
  269.     __vdi__(VDI_CONTRL_ENCODE(246, 0, 2, 0), handle);
  270.     *wchar = *outp++;
  271.     *hchar = *outp++;
  272.     *wcell = *outp++;
  273.     *hcell = *outp;
  274.  
  275.     return *((long *)(&_intout[0]));
  276. }
  277. #endif /* L_vst_ar32 */
  278.  
  279. #ifdef L_vqt_adva
  280.  
  281. /* Inquire Outline Font Text Advance Placement Vector
  282.  * This function returns the x and y offsets which are needed to  place the
  283.  * next character of a string in the proper position.  This call is necessary
  284.  * when laying down text at rotations other than 0, 90,  and 270.  In addition,
  285.  * the call returns remainder values for the x and y offsets (mod 16000), so
  286.  * that cursor placement can be calculated for v_ftext() and vqt_f_extent().
  287.  *
  288.  * In addition, this call also returns values in units of 1/65536 pixels (fix31
  289.  * format).  The new binding for vqt_advance32() follows, and atari encourages
  290.  * programmers to use the new data type.
  291.  *
  292.  */
  293. void vqt_advance(int handle, int ch, int *xadv, int *yadv, int *xrem,
  294.                  int *yrem)
  295. {
  296.     short    *outp = &_ptsout[0];
  297.  
  298.     _intin[0] = ch;
  299.     __vdi__(VDI_CONTRL_ENCODE(247, 0, 1, 0), handle);
  300.     *xadv = *outp++;
  301.     *yadv = *outp++;
  302.     *xrem = *outp++;
  303.     *yrem = *outp;
  304. }
  305. #endif /* L_vqt_adva */
  306.  
  307. #ifdef L_vqt_ad32
  308. /* new binding. returns results in fix31 (1/64k pixels) types.
  309.  */
  310. void vqt_advance32(int handle, int ch, long *advx, long *advy)
  311. {
  312.     long *outp = (long *)(&_ptsout[4]);
  313.  
  314.     _intin[0] = ch;
  315.     __vdi__(VDI_CONTRL_ENCODE(247, 0, 1, 0), handle);
  316.     *advx = *outp++;
  317.     *advy = *outp;
  318. }
  319. #endif /* L_vqt_ad32 */
  320.  
  321. #ifdef L_vqt_devi
  322.  
  323. /* Inquire device status information.
  324.  * This function takes a device id number as a parameter and reports back to
  325.  * the application whether or not the driver for that device has been installed
  326.  * by gdos. If the driver has been installed, the name of the driver is
  327.  * returned to the application.
  328.  */
  329. void
  330. vqt_devinfo( int handle, int device, int *isdev, char *drivername )
  331. {
  332.     short    *ioutp, *end;
  333.  
  334.     _intin[0] = device;
  335.     __vdi__(VDI_CONTRL_ENCODE(248, 0, 1, 0), handle);
  336.     if (0 != (*isdev = _ptsout[0])) {
  337.     ioutp = _intout;
  338.     end  = ioutp + _contrl[4];
  339.     do {
  340.         *drivername++ = (char) *ioutp++;
  341.     } while (ioutp < end);
  342.     }
  343.     *drivername = '\0';
  344. }
  345. #endif /* L_vqt_devi */
  346.  
  347. #ifdef L_v_saveca
  348.  
  349. /* Save outline font cache to disk.
  350.  */
  351. int
  352. v_savecache( int handle, char *filename )
  353. {
  354.     short        *inptr = _intin;
  355.  
  356.     while (*inptr++ = *filename++)
  357.     ;    /* nothing */
  358.     __vdi__(VDI_CONTRL_ENCODE(249, 0, (int)(inptr - _intin), 0), handle);
  359.  
  360.     return _intout[0];
  361. }
  362. #endif /* L_v_saveca */
  363.  
  364. #ifdef L_v_loadca
  365.  
  366. /* Load/merge outline font cache from disk.
  367.  * mode = 0 - append
  368.  *        = 1 - flush and load anew
  369.  * returns 0 or -1 if error
  370.  */
  371. int
  372. v_loadcache( int handle, char *filename, int mode )
  373. {
  374.     short *inptr = _intin;
  375.  
  376.     *inptr++ = mode;
  377.     while (*inptr++ = *filename++)
  378.     ;    /* nothing */
  379.     __vdi__(VDI_CONTRL_ENCODE(250, 0, (int)(inptr - _intin), 0), handle);
  380.  
  381.     return _intout[0];
  382. }
  383. #endif /* L_v_loadca */
  384.  
  385. #ifdef L_v_flushc
  386.  
  387. /* Flush outline font cache.
  388.  * return 0 or -1 on error.
  389.  */
  390. int v_flushcache( int handle )
  391. {
  392.     __vdi__(VDI_CONTRL_ENCODE(251, 0, 0, 0), handle);
  393.  
  394.     return _intout[0];
  395. }
  396. #endif /* L_v_flushc */
  397.  
  398. #ifdef L_vst_sets
  399.  
  400. /* Set Character Cell Width by Arbitrary Points. This function sets the current
  401.  * graphic text character width (set size) in printer points.  An arbitrary set
  402.  * size may be entered to represent the character width.  It should be noted
  403.  * that the next call to vst_point, vst_arbpt or vst_height will cancel out
  404.  * this call and  will set the set size to be equal to the requested point
  405.  * size. This call will only work with outline fonts.  The set size may be
  406.  * specified in either 16-bit integer format or 32-bit fix31 format (units of
  407.  * 1/65536 points).
  408.  */
  409. int vst_setsize( int handle,
  410.          int point,
  411.          int *wchar,
  412.          int *hchar,
  413.          int *wcell,
  414.          int *hcell )
  415. {
  416.     short *outp = &_ptsout[0];
  417.  
  418.     _intin[0] = point;
  419.     __vdi__(VDI_CONTRL_ENCODE(252, 0, 1, 0), handle);
  420.  
  421.     *wchar = *outp++;
  422.     *hchar = *outp++;
  423.     *wcell = *outp++;
  424.     *hcell = *outp;
  425.  
  426.     return _intout[0];
  427. }
  428. #endif /* L_vst_sets */
  429.  
  430. #ifdef L_vst_se32
  431.  
  432. /* new fix31 version
  433.  */
  434.  
  435. long vst_setsize32( int handle,
  436.          long point,
  437.          int *wchar,
  438.          int *hchar,
  439.          int *wcell,
  440.          int *hcell )
  441. {
  442.     short *outp = &_ptsout[0];
  443.  
  444.     *((long *)(&_intin[0])) = point;
  445.     __vdi__(VDI_CONTRL_ENCODE(252, 0, 2, 0), handle);
  446.  
  447.     *wchar = *outp++;
  448.     *hchar = *outp++;
  449.     *wcell = *outp++;
  450.     *hcell = *outp;
  451.  
  452.     return *((long *)(&_intout[0]));
  453. }
  454. #endif /* L_vst_se32 */
  455.  
  456. #ifdef L_vst_skew
  457.  
  458. /* Set FSM skew. (only works with outline fonts)
  459.  * Skew in tenths of degrees.  Valid values between -900 and 900. (-ve to left)
  460.  */
  461. int vst_skew( int handle, int skew )
  462. {
  463.     _intin[0] = skew;
  464.     __vdi__(VDI_CONTRL_ENCODE(253, 0, 1, 0), handle);
  465.  
  466.     return _intout[0];
  467. }
  468. #endif /* L_vst_skew */
  469.  
  470. #ifdef L_vqt_get_
  471.  
  472. /* Get Character Mapping Table. This call returns the address of a series of
  473.  * contiguous tables used internally by  SpeedoGDOS.  The tables are used to
  474.  * map the Atari character set to the equivalent Bitstream character indexes.
  475.  * Depending on the font file, a Speedo font's indexes have six different
  476.  * formats: the Bitstream International Character Set, the Bitstream
  477.  * International Symbol Set, the Bitstream Dingbats Set, the PostScript text
  478.  * set, the PostScript symbol set, and the PostScript Dingbats set.  There are
  479.  * a total of seven tables which map the Atari character set to Bitstream
  480.  * character indexes, one master mapping, and one table for each of the
  481.  * aforementioned character sets (in the order presented).    Applications can
  482.  * find out which character set corresponds to the current font by checking the
  483.  * Speedo font file header. Each individual table contains 224    word-sized
  484.  * entries with the first entry being the translation for character 32, the
  485.  * second for character 33....etc.    Therefore, with the address of the table,
  486.  * applications can change the mappings so that any Bitstream character index
  487.  * may be substituted.
  488.  */
  489. void vqt_get_table(int handle, short **map)
  490. {
  491.     __vdi__(VDI_CONTRL_ENCODE(254, 0, 0, 0), handle);
  492.  
  493.     *map = *((short **)(&_intout[0]));
  494. }
  495.  
  496. #if 0 /* old fsm binding */
  497. /* ----------------------------------------------------------------------
  498.  * Get FSM GASCII tables.
  499.  */
  500. void
  501. vqt_get_tables( int handle, void **gascii, void **style )
  502. {
  503.     __vdi__(VDI_CONTRL_ENCODE(254, 0, 0, 0), handle);
  504.     *gascii = *(void **)&_intout[0];
  505.     *style =  *(void **)&_intout[2];
  506. }
  507. #endif
  508. #endif /* L_vqt_get_ */
  509.  
  510. #ifdef L_vqt_cach
  511.  
  512. /* Get Outline Font Cache Size. Returns the largest block size available in
  513.  * each of the two fsm caches.    This call can be used to estimate how big a
  514.  * character SpeedoGDOS can handle when it prints a character.    A zero (0) in
  515.  * which_cache will instruct SpeedoGDOS to return the largest allocatable block
  516.  * in the character bitmap cache.  A one (1) will return the same information
  517.  * for the data structure cache.
  518.  */
  519. void vqt_cachesize( int handle, int which_cache, size_t *size )
  520. {
  521.     _intin[0] = which_cache;
  522.     __vdi__(VDI_CONTRL_ENCODE(255, 0, 1, 0), handle);
  523.     *size = *((size_t *)(&_intout[0]));
  524. }
  525. #endif /* L_vqt_cach */
  526.  
  527.  
  528. #ifdef L_vst_char
  529.  
  530. /* Set Character Mapping Mode. This function allows the application to switch
  531.  * from using the Atari character set to the BICS character set.  The
  532.  * vst_charmap() function will set a flag so that all subsequent calls to text
  533.  * calls will use words that are equivalent to Bitstream character indexes
  534.  * instead of Atari ASCII bytes.
  535.  */
  536. void vst_charmap(int handle, int mode)
  537. {
  538.     _intin[0] = mode;
  539.     __vdi__(VDI_CONTRL_ENCODE(236, 0, 1, 0), handle);
  540. }
  541. #endif /* L_vst_char */
  542.  
  543. #ifdef L_vst_kern
  544.  
  545. /* Set Kerning Mode. This function allows the application to set the different
  546.  * kerning modes.  Track kerning can have 0-3 tracks:  0 is no kerning, 1 is
  547.  * normal, 2 is tight, and 3 is very tight.  The vst_kern() function passes in
  548.  * a track kern value and it returns the track to which the current font is
  549.  * set.  Pair kerning is set to be on or off. The vst_kern() function will
  550.  * return 0 if there is no track kerning or a number greater than 0 to indicate
  551.  * that pair kerning is on; that number is the number of kerning pairs in the
  552.  * font.
  553.  */
  554. void vst_kern(int handle, int tmode, int pmode, int *tracks, int *pairs)
  555. {
  556.     _intin[0] = tmode;
  557.     _intin[1] = pmode;
  558.     __vdi__(VDI_CONTRL_ENCODE(237, 0, 2, 0), handle);
  559.     *tracks = _intout[0];
  560.     *pairs    = _intout[1];
  561. }
  562. #endif /* L_vst_kern */
  563.  
  564. #ifdef L_vqt_fnt
  565.  
  566. /* Inquire Speedo Font Header Information. This function copies the current
  567.  * font's Speedo font header into a buffer and returns the full path name for
  568.  * the corresponding TDF file.    Note that the buffer must be at least 421
  569.  * bytes.  See (nonexistant!) Bitstream documentation for specific font header
  570.  * information.
  571.  */
  572. void vqt_fontheader(int handle, char *buffer, char *pathname)
  573. {
  574.     short *ptr;
  575.     int n;
  576.  
  577.     *((char **)(&_intin[0])) = buffer;
  578.     __vdi__(VDI_CONTRL_ENCODE(232, 0, 2, 0), handle);
  579.  
  580.     for(ptr = &_intout[0], n = _contrl[4]; n > 0; n--)
  581.         *pathname++ = *ptr++;
  582. }
  583. #endif /* L_vqt_fnt */
  584.  
  585. #ifdef L_vqt_trac
  586.  
  587. /* Inquire Track Kerning Information. This function allows the application to
  588.  * inquire the adjustment vector for track kerning.  The vqt_trackkern()
  589.  * function returns the vector (x-direction and  y-direction) that indicates
  590.  * the spacing adjustment made between characters.
  591.  */
  592. void vqt_trackkern(int handle, long *x, long *y)
  593. {
  594.     __vdi__(VDI_CONTRL_ENCODE(234, 0, 0, 0), handle);
  595.     *x = *((long *)(&_ptsout[0]));
  596.     *y = *((long *)(&_ptsout[2]));
  597. }
  598. #endif /* L_vqt_trac */
  599.  
  600. #ifdef L_vqt_pair
  601.  
  602. /* Inquire Pair Kerning Information. This function allows the application to
  603.  * inquire the adjustment vector for pair kerning.    The vqt_pairkern() function
  604.  * returns the vector (x-direction and y-direction) that indicates the spacing
  605.  * adjustment made between the character pair specified.
  606.  */
  607. void vqt_pairkern(int handle, int ch1, int ch2, long *x, long *y)
  608. {
  609.     _intin[0] = ch1;
  610.     _intin[1] = ch2;
  611.     /* atari doc is wrong about contrl[3] */
  612.     __vdi__(VDI_CONTRL_ENCODE(235, 0, 2, 0), handle);
  613.     *x = *((long *)(&_ptsout[0]));
  614.     *y = *((long *)(&_ptsout[2]));
  615. }
  616. #endif /* L_vqt_pair */
  617.  
  618. #ifdef L_v_getbit
  619.  
  620. /* Get Character Bitmap Information. This call provides information to allow
  621.  * the caller to know the exact size and placement of a given character.  This
  622.  * information includes the character's x and y advance vectors, the x and y
  623.  * offsets, and the bitmap dimensions of the character. The advance vector
  624.  * represents the amount to add to the current point to place the following
  625.  * character.  The x and y offsets, when added to the current point, give the
  626.  * caller the location of the upper left hand corner of the bitmap.  The width
  627.  * and height of the bitmap are returned as 16 bit integers.  All other values
  628.  * are returned in fix31 representation.
  629.  */
  630. void v_getbitmap_info(int handle,
  631.                       int ch,
  632.                       long *advancex, long *advancey,
  633.                       long *xoffset, long *yoffset,
  634.                       int *width, int *height,
  635.                       short **bitmap)
  636. {
  637.     _intin[0] = ch;
  638.     __vdi__(VDI_CONTRL_ENCODE(239, 0, 1, 0), handle);
  639.     *width = _intout[0];
  640.     *height = _intout[1];
  641.     *advancex = *((long *)(&_intout[2]));
  642.     *advancey = *((long *)(&_intout[4]));
  643.     *xoffset = *((long *)(&_intout[6]));
  644.     *yoffset = *((long *)(&_intout[8]));
  645.     *bitmap = *((short **)(&_intout[10]));
  646. }
  647. #endif /* L_v_getbit */
  648.  
  649. /* -eof- */
  650.